#ifndef _XX_YY_BMOCK_EXPAND_ARG
#define _XX_YY_BMOCK_EXPAND_ARG

#include <boost/preprocessor/list/for_each.hpp>
#include <boost/preprocessor/tuple/to_list.hpp>
#include <boost/preprocessor/punctuation/comma_if.hpp> 

#include <boost/preprocessor/facilities/expand.hpp> 
#include <boost/preprocessor/control/if.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/comparison/equal.hpp>

#define __BMOCK_EXPAND_ARG(ARG)\
	BOOST_PP_EXPAND(BOOST_PP_CAT(__BMOCK_USE_,ARG))

#define __BMOCK_ARG(R,DUMMY,I,ARG)\
	BOOST_PP_COMMA_IF(I)\
	__BMOCK_EXPAND_ARG(ARG)

#define __BMOCK_EXPAND_ARG_LIST(N,IAL)\
	BOOST_PP_LIST_FOR_EACH_I(__BMOCK_ARG,DUMMY,BOOST_PP_TUPLE_TO_LIST(N,IAL))

#define __BMOCK_USE_RAW_MEM(DIR,ARG,LEN)\
	__BMOCK_USE_RAW_##DIR(ARG,LEN)

#endif